package kgc.crm.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import kgc.crm.mapper.RoleMenuMapper;
import kgc.crm.model.RoleMenu;
import kgc.crm.service.IRoleMenuService;
import kgc.crm.util.EmptyChecker;
import kgc.crm.util.ResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

import java.lang.reflect.Array;
import java.util.ArrayList;
@Service
@Slf4j
public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper,RoleMenu> implements IRoleMenuService {
    @Override
    public ResponseEntity rolePermissions(Integer roleId, String menuIds) {
        if (EmptyChecker.isEmpty(roleId)) {
            //拿到的用户为空的话
            log.error("【角色模块】角色权限添加，role对象ID不能为空{},",roleId);
            return ResultUtil.error("角色权限添加失败");
        }
        if (EmptyChecker.isEmpty(menuIds)) {
            log.error("【角色模块】角色权限添加，参数不能为空");
            return ResultUtil.error("角色权限添加失败");
        }
//        Array array = new ArrayList<>();
        JSONObject object = JSON.parseObject(menuIds);
        JSONArray array = object.getJSONArray("menuIds");
        ArrayList<RoleMenu> list = new ArrayList();
        for (int i = 0; i < array.size(); i++) {
            RoleMenu roleMenu = new RoleMenu();
            roleMenu.setRoleId(roleId);
            //Long.valueOf()把字符串转成Long
            roleMenu.setMenuId(Integer.valueOf(array.get(i).toString()));
            list.add(roleMenu);
        }
        boolean batch;
        //saveBatch 批量添加
        //把获取到的JSONArray array数组存到Userrole对象中
        //存的时候先把array每一个的值转成String再强转成Long类型的
        //然后再把存好的UserRole对象存到创建的ArrayList集合中
        try {
            batch = saveBatch(list, array.size());
        } catch (Exception e) {
            log.error("【角色模块】角色权限添加，sql语句执行错误", e);
            return ResultUtil.error("角色权限添加失败");
        }
        if (!batch) {
            log.error("【角色模块】角色权限添加，添加不成功");
            return ResultUtil.error("角色权限添加失败");
        }
        return ResultUtil.success(list);
    }
}
